﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Sysgeprava.Entities;
using System.Data;

namespace Sysgeprava.Repository
{
    public class TrabajadorRepository:MasterRepository,ITrabajadorRepository
    {
        public List<TRABAJADOR> GetAllFromTrabajador()
        {
            var query = from c in context.TRABAJADORs
                        where c.Inactivo==false || c.Inactivo==null
                        select c;
            return query.ToList();
        }

        public List<TRABAJADOR> GetAllFromTrabajadorByCriterio(string criterio)
        {
            var query = from c in context.TRABAJADORs
                        where c.Inactivo == false || c.Inactivo == null
                        select c;
            if (criterio != null && criterio != string.Empty && criterio != "")
            {
                query = from c in context.TRABAJADORs
                        where (c.ApeMaterno.ToUpper().Contains(criterio) ||
                        c.ApePaterno.ToUpper().Contains(criterio) ||
                        c.Nombre.ToUpper().Contains(criterio) ||
                        c.Dni.Contains(criterio)) && (c.Inactivo==false || c.Inactivo==null)
                        select c;
            }
            return query.ToList();
        }

        public TRABAJADOR GetAllFromTrabajadorById(int id)
        {
            var query = from c in context.TRABAJADORs
                        where c.Id.Equals(id)
                        select c;
            return query.SingleOrDefault();
        }

        public TRABAJADOR GetAllFromTrabajadorByDni(string dni)
        {
            var query = from c in context.TRABAJADORs
                        where c.Dni.Contains(dni)
                        select c;
            return query.SingleOrDefault();
        }

        public void AddTrabajador(TRABAJADOR trabajador)
        {
            context.TRABAJADORs.Add(trabajador);
            context.SaveChanges();
        }

        public void UpdateTrabajador(TRABAJADOR trabajador)
        {
            var trabajadorDB = context.TRABAJADORs.Find(trabajador.Id);

            trabajadorDB.ApeMaterno = trabajador.ApeMaterno;
            trabajadorDB.ApePaterno = trabajador.ApePaterno;
            trabajadorDB.Direccion = trabajador.Direccion;
            trabajadorDB.Dni = trabajador.Dni;
            trabajadorDB.Nombre = trabajador.Nombre;
            trabajadorDB.Telefono = trabajador.Telefono;
            trabajadorDB.Inactivo = trabajador.Inactivo;
            trabajadorDB.FOTO_TRABAJADOR = trabajador.FOTO_TRABAJADOR;

            context.Entry(trabajadorDB.FOTO_TRABAJADOR).State = EntityState.Modified;
            context.Entry(trabajadorDB).State = EntityState.Modified;
            context.SaveChanges();
        }

        public void DeleteTrabajador(int id)
        {
            var existe = context.TRABAJADORs.Find(id);

            if (existe != null)
            {
                context.TRABAJADORs.Remove(existe);
                context.SaveChanges();
            }
        }

        public void InactivoTrabajador(TRABAJADOR trabajador)
        {
            var trabajadorDB = context.TRABAJADORs.Find(trabajador.Id);

            trabajadorDB.Inactivo = trabajador.Inactivo;

            context.Entry(trabajadorDB).State = EntityState.Modified;
            context.SaveChanges();
        }
    }
}
